package com.simp.utils;


import com.simp.page.R;
import com.simp.utils.detail.CommonFileUtilsDetails;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.List;

/**
 * 把所有的工具类入口提取出来，方便查看
 *
 * @author pan.shun
 * @since 2022/3/14 20:25
 */
public class CommonUtils extends CommonFileUtilsDetails {

    /**
     * 文件授权
     *
     * @param fileName 文件名
     */
    public static void fileAuthorization(String fileName) {
        changeFilePermission(fileName);
    }

    /**
     * 解压文件
     *
     * @param zipFile 需要解压的文件
     * @param descDir 解压至某个目录
     */
    public static void unzipFile(File zipFile, String descDir) {
        unZip(zipFile, descDir);
    }

    /**
     * 压缩文件
     *
     * @param KeepDirStructure 是否保留原来的目录结构,true:保留目录结构;
     */
    public static void makeFileToZip(String filePath, File targetZipFile, boolean KeepDirStructure) {
        fileToZip(filePath, targetZipFile, KeepDirStructure);
    }

    /**
     * 批量压缩文件
     */
    public static void makeFilesToZip(List<File> fileList, File targetZipFile) {
        filesToZip(fileList, targetZipFile);
    }

    /**
     * 查看文件内容，读取文件内容转换成String
     */
    public static String getFileContent(File file) {
        return readFileContent(file);
    }

    /**
     * 执行Cmd指令
     */
    public static String executeCommand(String cmd) {
        return execCommand(cmd);
    }

    /**
     * 文件大小格式转换
     */
    public static String fileSizeFormat(long size) {
        return fileSizeTran(size);
    }


    /**
     * 获取文件的创建时间
     */
    public static String getFileCreateTime(String filePath) {
        return getFileCreateTimeDetail(filePath);
    }

    /**
     * 文件下载
     */
    public static void fileDownLoad(HttpServletResponse response, String path) {
        downLoadFile(response, path);
    }

    /**
     * 文件上传
     */
    public static R uploadFile(MultipartFile file, long maxSize, String filePath) {
        return uploadFileDetail(file, maxSize, filePath);
    }
}
